#ifndef _LOGIC_SYSTEM_H_
#define _LOGIC_SYSTEM_H_

#include "tools/CommandArgs.h"

/**
	Interface for all systems to use
*/

class LogicSystem {
public:
	virtual ~LogicSystem() {}
	/** This is the function called on every "tick" with dt being the difference between the last frame and now */
	virtual void update(long currTime) = 0;
	
	/** This is the initialization function with the given command line args. Should return whether it succeeded normally */
	virtual bool init(const CmdLineArgs& args) = 0;
	
	/**	This is when we need to kill the system and clean up ALL remnants of it such that this system doesn't exist but the
		program continues on
	*/
	virtual void kill() = 0;
	
	/** This is when we're terminating the program, so only clean up things that are leaks not in our process space */
	virtual void terminate() = 0;
};

#endif
